#ifndef _FRM_SCENE_H
#define _FRM_SCENE_H

#include "Ogre.h"

//CEGUI
#include <CEGUI/CEGUI.h>
#include "OgreCEGUIRenderer.h"
#include "OgreCEGUIResourceProvider.h"

using namespace Ogre;
//using namespace CEGUI;

//#include "Physics.h"
//class PhysicsSystem;

class frmScene
{
private:


public:
	frmScene();
	~frmScene();
	
	//Subscribe events to this form
	void subscribeEvents();
	
	//Setup the elements of the GUI window
	void setup();

	void populateSkyBoxCombo();
	void fillGUIFromConfig();
	bool updateFog();
	//void updateObjectYawMove();

	//////////////////////////////////////////////////////////////////////////////////////////////////////
	//Objects GUI Events
	//////////////////////////////////////////////////////////////////////////////////////////////////////
	bool evtSceneBackgroundRed_change(const CEGUI::EventArgs& e);
	bool evtSceneBackgroundGreen_change(const CEGUI::EventArgs& e);
	bool evtSceneBackgroundBlue_change(const CEGUI::EventArgs& e);
	bool evtSceneClose_click(const CEGUI::EventArgs& e);

	bool evtSceneFogStart_change(const CEGUI::EventArgs& e);
	bool evtSceneFogEnd_change(const CEGUI::EventArgs& e);
	
	bool evtSceneFogType_change(const CEGUI::EventArgs& e);
	bool evtSceneFogDensity_change(const CEGUI::EventArgs& e);

	bool evtSceneFogColorRed_change(const CEGUI::EventArgs& e);
	bool evtSceneFogColorGreen_change(const CEGUI::EventArgs& e);
	bool evtSceneFogColorBlue_change(const CEGUI::EventArgs& e);
	
	bool evtSceneAmbientLightRed_change(const CEGUI::EventArgs& e);
	bool evtSceneAmbientLightGreen_change(const CEGUI::EventArgs& e);
	bool evtSceneAmbientLightBlue_change(const CEGUI::EventArgs& e);

	bool evtSceneDiffuseLightRed_change(const CEGUI::EventArgs& e);
	bool evtSceneDiffuseLightGreen_change(const CEGUI::EventArgs& e);
	bool evtSceneDiffuseLightBlue_change(const CEGUI::EventArgs& e);

	bool evtSceneSpecularLightRed_change(const CEGUI::EventArgs& e);
	bool evtSceneSpecularLightGreen_change(const CEGUI::EventArgs& e);
	bool evtSceneSpecularLightBlue_change(const CEGUI::EventArgs& e);
	
	bool evtSceneActivateSky_click(const CEGUI::EventArgs& e);
	bool evtSceneManageLight_click(const CEGUI::EventArgs& e);
	bool evtSceneDayNightCycle_change(const CEGUI::EventArgs& e);
	bool evtSceneCloudsSpeed_change(const CEGUI::EventArgs& e);
	bool evtSceneCloudsCover_change(const CEGUI::EventArgs& e);
	bool evtSceneCloudsBendTime_change(const CEGUI::EventArgs& e);

	bool evtSceneNearClip_change(const CEGUI::EventArgs& e);
	bool evtSceneAspectRatio_change(const CEGUI::EventArgs& e);
	bool evtSceneFarClip_change(const CEGUI::EventArgs& e);

	bool evtSceneProjectionType_change(const CEGUI::EventArgs& e);
	bool evtSceneFOVy_change(const CEGUI::EventArgs& e);

	bool evtSceneSkyBoxList_change(const CEGUI::EventArgs& e);
	bool evtSceneOptSkyBox_change(const CEGUI::EventArgs& e);
	bool evtSceneOptCaelum_change(const CEGUI::EventArgs& e);
	bool evtSceneSkyBoxDistance_change(const CEGUI::EventArgs& e);

};

#endif